#ifndef CBOMBSHOTBEHAVIOUR_H
#define CBOMBSHOTBEHAVIOUR_H


#include "../include/CDefaultShotBehaviour.h"

#define DISTANCE 300    //Distance the bomb will do

//**************************
//Manage the behaviour of a Shot
//**************************
class CBombShotBehaviour : public CDefaultShotBehaviour
{
    protected:
        bool m_bInTheAir;    //True if the bomb hasn't reach the ground
        int m_iDistanceToDo;    //Distance before the bomb touch the ground

    public:
        //**************************
        //Description : Constructor
        //Parameters : Value for m_iX, m_iY,
        //              m_iSpeedX, m_iSpeedY,
        //              m_iWidth, m_iHeight,
        //              the ratio of the collision box
        //              the type of collision
        //              m_iPowerShot
        //Note : None
        //**************************
        CBombShotBehaviour(int _iX = 0, int _iY = 0,
                                int _iSpeedX = 1, int _iSpeedY = 1,
                                int _iWidth = 0, int _iHeight = 0,
                                float _fRatioW = 1.0f, float _fRatioH = 1.0f,
                                TYPE_COLLISION _iTypeCollision = LAND,
                                int _iPowerShot = 2);

        //**************************
        //Description : Copy Constructor
        //Parameters : A CBombShotBehaviour
        //Note : None
        //**************************
        CBombShotBehaviour(CBombShotBehaviour & _BombShot);

        //**************************
        //Description : Destructor
        //Parameters : None
        //Note : None
        //**************************
        virtual ~CBombShotBehaviour();

        //**************************
        //Description : Test if the entity is in collision with _Entity
        //Parameters : None
        //Return Value : true if there is collision, otherwise false
        //Note : Collision can be different for entity (for example a bomb don't collide all the time, because it's in the air)
        //**************************
        virtual bool CollideWith(IDefaultEntityBehaviour * _Entity) const;

        //**************************
        //Description : Return wheter the entity is out of the screen or not
        //Parameters : None
        //Return Value : True if the entity is out of the screen, otherwise false
        //Note : The bomb is out of the screen if it has reach the ground of if it isn't in the screen anymore
        //**************************
        virtual bool IsOutOfScreen() const;

        //**************************
        //Description : Update the trajectory of the entity
        //Parameters : None
        //Return Value : None
        //Note : None
        //**************************
        virtual void EntityTrajectory();
};
#endif
